/**
 * <p><b>Title:</b> HasVideoFilter.java </p>
 *
 * @Package com.wondertek.oes.charge.service.manager.rule.filter
 */
package com.wondertek.poms.core.filter.impl;

import com.wondertek.poms.core.filter.BaseRuleFilter;
import com.wondertek.poms.core.filter.RuleFilterChain;

import com.wondertek.poms.common.constant.Constants;
import com.wondertek.poms.common.utils.StringUtil;
import com.wondertek.poms.dao.po.Content;
import com.wondertek.poms.dao.po.IRulePo;
import com.wondertek.poms.dao.po.PrdInfoRule;


import cn.hutool.core.convert.Convert;

/**
 * <p><b>HasVideoFilter Description:</b> 是否可无媒体文件过滤器 </p>
 *
 * @author douzi
 * <b>DATE</b> 2019年8月30日 下午6:01:53
 */
public class HasVideoFilter extends BaseRuleFilter {

    @Override
    public void doFilter(IRulePo rule, Content c, RuleFilterChain chain) {
        if (rule instanceof PrdInfoRule) {
            PrdInfoRule r = (PrdInfoRule) rule;
            baseFilter(r.getPrdRuleId(), 
            		r.getHasVideo(), 
            		c.getHasVideo() == null ? 1 : (c.getHasVideo() ? 1 : 0), 
            		chain, 
            		c);
        }
        chain.doFilter(rule, c, chain);
    }

    /**
     * <p><b>Title:</b> baseFilter</p>
     * <p><b>Description:</b> </p>
     *
     * @param voStr
     * @param chain
     * @param
     * @author douzi
     */
    private void baseFilter(Long id, String ruleStr, Integer voStr, RuleFilterChain chain, Content c) {
        if (chain.isFlag() && StringUtil.isNotBlank(ruleStr)) {
            if (Constants.ASSET_HASMEDIA_0 == Convert.toInt(voStr, Constants.ASSET_HASMEDIA_0)) {//是否可无媒体文件, 1-是， 其他-否
                if (!Constants.ASSET_FORM_TYPE_6.equals(c.getFormType()) && !"4".equals(c.getAuthorizationWay())) {//只有是非剧集   周清华 2020/1/8 16:02
                    if (Integer.parseInt(ruleStr) == Constants.RULE_HASMEDIAFILE_0) {
                        chain.setFlag(Boolean.FALSE);
                        chain.getResultStr().append("规则:" + id).append("|是否可无媒体文件-HasVideo").append("|不符合此列规则|").append("规则值为否|表示媒资必须有媒体文件存在");
                    }
                }
            }

//            log(id, chain, "是否可无媒体文件-HasVideo", ruleStr, voStr);  使用特殊日志展示，统一日志容易产生歧义
        }
    }

    public static void main(String[] args) {
        Integer aa = null;
        System.out.println((1 != Convert.toInt(aa, Constants.ASSET_HASMEDIA_0)) + "");
    }

}
